# -*- coding: utf-8 -*-
# @Time    : 2019/4/11 11:24
# @Author  : Xingjh
# @Email   : xjh_0125@sina.com
# @File    : simplify_path.py
# @Software: PyCharm

class Solution:
    def __init__(self):
        '''
        https://leetcode-cn.com/problems/simplify-path/
        以 Unix 风格给出一个文件的绝对路径，你需要简化它。或者换句话说，将其转换为规范路径。

        在 Unix 风格的文件系统中，一个点（.）表示当前目录本身；此外，两个点 （..） 表示将目录切换到上一级（指向父目录）；两者都可以是复杂相对路径的组成部分。更多信息请参阅：Linux / Unix中的绝对路径 vs 相对路径

        请注意，返回的规范路径必须始终以斜杠 / 开头，并且两个目录名之间必须只有一个斜杠 /。最后一个目录名（如果存在）不能以 / 结尾。此外，规范路径必须是表示绝对路径的最短字符串。



        示例 1：

        输入："/home/"
        输出："/home"
        解释：注意，最后一个目录名后面没有斜杠。
        示例 2：

        输入："/../"
        输出："/"
        解释：从根目录向上一级是不可行的，因为根是你可以到达的最高级。
        '''

    def simplifyPath(self, path):
        path = path.replace('//', '/').replace('/./', '/')
        arr = path.split('/')
        li = []
        for i in arr:
            if i == '' or i == '.' or i == '/':
                continue
            elif i == '..':
                if len(li) > 0:
                    li.pop()
            else:
                li.append(i)
        return '/' + '/'.join(li)


if __name__ == '__main__':
    s = Solution()
    p = '/a/../../b/../c//.//'
    # p = "/a//b////c/d//././/.."
    print(s.simplifyPath(p))
